package controller;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import implement.ChamadoDAOImpl;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;

import dao.ChamadoDAO;
import enums.PrioridadeChamado;
import enums.StatusChamado;
import model.CategoriaChamado;
import model.Chamado;

@ManagedBean
public class ChamadoBean {
	
	public ChamadoDAO chamadoDAO;
	private Chamado chamado;
	private CategoriaChamado categoria;
	private List<PrioridadeChamado> prioridade;
	private List<StatusChamado> status;

	@PostConstruct
	public void init(){
		chamado = new Chamado();
		chamadoDAO = new ChamadoDAOImpl();
		categoria = new CategoriaChamado();
		chamado.setCodigo(chamadoDAO.geraCodigo());
		chamado.setDataSolicitacao(chamadoDAO.geraData());
	}
	
	public String salvar(){
		chamadoDAO.save(chamado);
		return "list";
	}
	
	public void editar(Chamado chamado){
		this.chamado = chamado;
		//return "edit";
	}
	
	public String atribuir(Chamado chamado){
		this.chamado = chamado;
		return "atribuirChamado";
	}
	
	
	
	public List<Chamado> listaTodos(){
		return chamadoDAO.getAll(Chamado.class);
	}
	
	public List<Chamado> listaChamadosUpa(){
		return chamadoDAO.chamadosUpas();
	}
	
	public List<Chamado> listaChamadosPosto(){
		return chamadoDAO.chamadosPostos();
	}
	
	public List<Chamado> aguardando(){
		return chamadoDAO.chamadosAguardando();
	}
	
	public List<Chamado> atendidos(){
		return chamadoDAO.chamadosAtendidos();
	}
	
	public List<Chamado> atrasados(){
		return chamadoDAO.chamadosAtrasados();
	}
		
	public void excluir(Chamado chamado){
		chamadoDAO.remove(chamado);
	}

	public Chamado getChamado() {
		return chamado;
	}

	public void setChamado(Chamado chamado) {
		this.chamado = chamado;
	}

	public CategoriaChamado getCategoria() {
		return categoria;
	}

	public void setCategoria(CategoriaChamado categoria) {
		this.categoria = categoria;
	}

	public List<PrioridadeChamado> getPrioridade() {
		prioridade = Arrays.asList(PrioridadeChamado.values());
		return prioridade;
	}

	public void setPrioridade(List<PrioridadeChamado> prioridade) {
		this.prioridade = prioridade;
	}

	public List<StatusChamado> getStatus() {
		status = Arrays.asList(StatusChamado.values());
		return status;
	}

	public void setStatus(List<StatusChamado> status) {
		this.status = status;
	}	
}
